#pragma once
#include "DirectDrawFwd.h"
#include "PaletteVector.h"

namespace ja2{ namespace sgp
{
	class Rect;

	//! Interface for image data.
	class IImageData : boost::noncopyable
	{
		// Operations
	public:
		//! Blit data to surface transparent.
		virtual void blit_transparent(IDirectDrawSurfacePtr &pSurface, Rect const &SourceRect) const = 0;
		//! Blit data to surface with shadow.
		virtual void blit_shadow(IDirectDrawSurfacePtr &pSurface, Rect const &SourceRect) const = 0;
		//! Get palette.
		/*!
			\Return palette if exist (borrowed) or nullptr otherwise.
		*/
		virtual PaletteVector_t const *palette() const = 0;

		// Construction/Destruction
	public:
		virtual ~IImageData() = 0 {};
	};

	typedef std::unique_ptr<IImageData> IImageDataPtr_t;
} /*sgp*/} /*ja2*/
